package com.ozo.easy.gen.pojo.vo;

import com.ozo.easy.gen.constant.GenerationType;
import com.ozo.easy.gen.constant.PageFormType;
import com.ozo.easy.gen.constant.PageTableType;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 表配置VO
 * </p>
 *
 * @author ozo
 * @date 2025-01-06
 */
@Data
@Schema(description = "表配置视图对象")
public class GenTableVO implements Serializable {

    private static final long serialVersionUID = 1L;

    @Schema(description = "id")
    private Long id;

    @Schema(description = "新建方式")
    private GenerationType tableType;

    @Schema(description = "表名称")
    private String tableName;

    @Schema(description = "表注释")
    private String tableComment;

    @Schema(description = "是否继承基类")
    private Boolean extendBaseEntity;

    @Schema(description = "项目名")
    private String projectName;

    @Schema(description = "生成作者")
    private String genAuthor;

    @Schema(description = "生成版本号")
    private String genVersion;

    @Schema(description = "生成包路径")
    private String genPackage;

    @Schema(description = "生成实体类名")
    private String genClass;

    @Schema(description = "生成功能描述")
    private String genFunction;

    @Schema(description = "生成日志")
    private Boolean genOperateLog;

    @Schema(description = "生成新增")
    private Boolean genAdd;

    @Schema(description = "生成删除")
    private Boolean genRemove;

    @Schema(description = "生成编辑")
    private Boolean genEdit;

    @Schema(description = "生成查询")
    private Boolean genSelect;

    @Schema(description = "生成页面")
    private Boolean genPage;

    @Schema(description = "表格类型")
    private PageTableType genPageTableType;

    @Schema(description = "表单类型")
    private PageFormType genPageFormType;

    @Schema(description = "生成路径")
    private String genPath;

    @Schema(description = "上级菜单id")
    private Long parentMenuId;

    @Schema(description = "备注")
    private String remark;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

}
